package com.xiaoxu.rental.util;


import com.xiaoxu.rental.entity.Dept;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

/**
 * 部门树工具类
 * 用于根据部门列表和父部门ID构建部门树结构
 */
public class DeptTreeUtils {

    /**
     * 根据部门列表和父部门ID构建部门树
     *
     * @param deptList 部门列表
     * @param pid 父部门ID
     * @return 构建好的部门树列表
     */
    public static List<Dept> buildTree(List<Dept> deptList, int pid) {
        List<Dept> deptTree = new ArrayList<>();
        // 从部门列表中筛选出父部门ID为指定ID的部门
        Optional.ofNullable(deptList).orElse(new ArrayList<>())
                .stream().filter(dept -> dept != null && dept.getPid() == pid)
                .forEach(dept -> {
                    Dept dept1 = new Dept();
                    // 复制当前部门的属性到新对象dept1
                    BeanUtils.copyProperties(dept, dept1);
                    // 递归构建dept1的子部门树
                    dept1.setChildren(buildTree(deptList, dept.getId()));
                    deptTree.add(dept1);
                });
        return deptTree;
    }
}


